﻿var selectedMenuId = "#";

$(function () {   
    initTree();

    // 控件
    $("#btnAddRoot").click(function () {
        selectedMenuId = "#";
        add(0);
    });
    $("#btnAdd").click(function () {
        if (selectedMenuId == "#") {
            alert("请先选择一个父节点！");
            return
        }
        add(0);
    });
    $("#btnSave").click(function () { save(); });
    $("#btnDelete").click(function () { deleteMulti(); });
    $("#btnLoadRoot").click(function () {
        selectedMenuId = "#";
        loadTables();
    });
    $("#checkAll").click(function () { checkAll(this) });
});

//加载功能树
function initTree() {
    $.jstree.destroy();
    $.ajax({
        type: "Get",
        url: "/menu/GetMenuTreeData?_t=" + new Date().getTime(),      // 获取数据的ajax请求地址
        success: function (data) {
            $('#treeDiv').jstree({                                    // 创建JsTtree
                'core': {
                    'data': data,                                     // 绑定JsTree数据
                    "multiple": false                                 // 是否多选
                },
                "plugins": ["state", "types", "wholerow"]             // 配置信息
            })
            $("#treeDiv").on("ready.jstree", function (e, data) {     // 树创建完成事件
                data.instance.open_all();                             // 展开所有节点
            });
            $("#treeDiv").on('changed.jstree', function (e, data) {   // 选中节点改变事件
                var node = data.instance.get_node(data.selected[0]);  // 获取选中的节点
                if (node) {
                    selectedMenuId = node.id;
                    loadTables();
                };
            });
        }
    });
}

// 将功能菜单加载到右边的表格 (替换字符串拼接的方法)
function loadTables() {
    $("#tableBody").html("");
    $("#checkAll").prop("checked", false);

    $.ajax({
        type: "GET",
        url: "/menu/GetTableRows?parentId=" + selectedMenuId,
        success: function (data) {           
            $("#tableBody").append(data);            
        }
    });
}

//加载功能列表数据
//function loadTables() {
//    $("#tableBody").html("");
//    $("#checkAll").prop("checked", false);

//    $.ajax({
//        type: "GET",
//        url: "/menu/GetMenusByParent?parentId=" + selectedMenuId,
//        success: function (data) {
//            $.each(data, function (i, item) {

//                var tr = "<tr>";
//                tr += "<td align='center'><input type='checkbox' class='checkboxs' value='" + item.id + "'/></td>";
//                tr += "<td>" + item.name + "</td>";
//                tr += "<td>" + (item.code == null ? "" : item.code) + "</td>";
//                tr += "<td>" + (item.url == null ? "" : item.url) + "</td>";
//                tr += "<td>" + (item.type == 0 ? "功能菜单" : "操作按钮") + "</td>";
//                tr += "<td>" + (item.remarks == null ? "" : item.remarks) + "</td>";
//                tr += "<td><button class='btn btn-info btn-xs' ";
//                tr += "href = 'javascript:;' onclick = 'edit(\"" + item.id + "\")' >";
//                tr += "<i class='fa fa-edit'></i> 编辑 </button > ";
//                tr += "<button class='btn btn-danger btn-xs' href='javascript:;' onclick='deleteSingle(\"" + item.id + "\")'>";
//                tr += "<i class='fa fa-trash-o'></i> 删除 </button > </td > "
//                tr += "</tr>";
//                $("#tableBody").append(tr);
//            })
//        }
//    });
//}

//新增
function add(type) {
    $("#menuAddModal #ParentId").val(selectedMenuId);

    $("#CodeAdd").val("");
    $("#NameAdd").val("");
    $("#TypeAdd").val(type);
    $("#UrlAdd").val("");
    $("#IconAdd").val("");
    $("#SerialNumberAdd").val(0);
    $("#Remarks").val("");
    $("#TitleAdd").text("新增菜单或功能");

    //弹出新增窗体
    $("#menuAddModal").modal("show");
};

// 打开编辑模态框
function edit(id) {
    $.ajax({
        type: "Get",
        url: "/menu/Get?id=" + id,
        success: function (data) {
            $("#id").val(data.id);
            $("#ParentId").val(data.parentId);
            $("#Name").val(data.name);
            $("#Code").val(data.code);
            $("#Type").val(data.type);
            $("#Url").val(data.url);
            $("#Icon").val(data.icon);
            $("#SerialNumber").val(data.serialNumber);
            $("#Remarks").val(data.remarks);
            $("#actiontype").val(1); // type 1 表修改

            $("#Title").text("编辑菜单或功能")
            $("#menuEditModal").modal("show"); // menuEditModal is in MenuList.cshtml
        },
        error: function (err) {
            console.log(err);
        }
    });
};

function saveUpdate() {
    var postData = {
        "menu": {
            "Id": $("#id").val(),
            "ParentId": $("#ParentId").val(),
            "Name": $("#Name").val(),
            "Code": $("#Code").val(),
            "Type": $("#Type").val(),
            "Url": $("#Url").val(),
            "Icon": $("#Icon").val(),
            "SerialNumber": $("#SerialNumber").val(),
            "Remarks": $("#Remarks").val()
        }
    };

    $.ajax({
        type: "Post",
        url: "/Menu/Edit",
        data: postData,
        success: function (data) {
            initTree();           
            $("#menuEditModal").modal("hide");           
        }
    });
}

function saveInsert() {
    var postData = {
        "menu": {
            "ParentId": $("#menuAddModal #ParentId").val(),
            "Name": $("#NameAdd").val(),
            "Code": $("#CodeAdd").val(),
            "Type": $("#TypeAdd").val(),
            "Url": $("#UrlAdd").val(),
            "Icon": $("#IconAdd").val(),
            "SerialNumber": $("#SerialNumberAdd").val(),
            "Remarks": $("#menuAddModal #Remarks").val()
        }
    };

    $.ajax({
        type: "Post",
        url: "/Menu/Create",
        data: postData,
        success: function (data) {
            initTree();            
            $("#menuAddModal").modal("hide");            
        }
    });
}

// 删除单条数据
function remove(id) {
    if (confirm("确定删除该笔记录?")) {
        $.ajax({
            type: "POST",
            url: "/menu/remove",
            data: { "id": id },
            success: function (data) {                
                initTree();
            }              
        });
    }
}


